﻿using System;
using System.Linq;
using System.Collections.Generic;
using PSE.Tools.Util.ExtensoesMetodos;
using PSE.Tools.Util.AcessoDados;
using System.Text;
using System.Data;

namespace PSE.Tools.CadastroMensagens.AcessoDados
{
    /// <summary>
    /// Classe que persiste as informações de SubMódulo
    /// </summary>
    public class SubModulo : ResourceAccess
    {
        #region [ Métodos ]

        /// <summary>
        /// Retorna uma Lista Contendo os SubMódulos Existentes Conforme Módulo
        /// </summary>
        /// <returns></returns>
        public IList<Entidades.SubModulo> ListarSubModuloPorModulo(int modulo)
        {
            StringBuilder sql = new StringBuilder();
            sql.Append(@"SELECT DISTINCT
                            COD_SUB_MOD,
                            NOME_SUB_MOD,
                            COD_MOD
                        FROM 
                            TFWDSUB_MOD ");
            if (modulo > 0)
            {
                sql.Append(@" WHERE COD_MOD = :COD_MOD ");
            }


            sql.Append(@" ORDER BY NOME_SUB_MOD ASC ");

            IList<Entidades.SubModulo> subModulos;

            using (IDbCommand command = this.GetSqlStringCommand(sql.ToString()))
            {
                if (modulo > 0)
                {
                    this.AddInParameter(command, "COD_MOD", DbType.Int32, modulo);
                }

                subModulos = this.FindAll<Entidades.SubModulo>(command,
                    i => new Entidades.SubModulo
                    {
                        Id = i.GetValue<int>("COD_SUB_MOD"),
                        Nome = i.GetValue<string>("NOME_SUB_MOD"),
                        fkModulo = i.GetValue<int>("COD_MOD")
                    }
                );
            }
            return subModulos;
        }
        #endregion [ Métodos ]
    }
}
